export default {
  methods: {
    // 过滤上传图片类型
    /**
     * @param {*} file 文件对象
     */
    beforeImgUpload(file) {
      const fileTypeArr = ['image/jpg', 'image/jpeg', 'image/png'];
      if (!fileTypeArr.includes(file.type)) {
        this.$message.error('上传图片只支持jpg、jpeg、png格式!');
        return false;
      }
    },
    // 过滤上传视频类型
    /**
     * @param {*} file 文件对象
     */
    beforeVideoUpload(file) {
      const fileTypeArr = ['video/mp4'];
      if (!fileTypeArr.includes(file.type)) {
        this.$message.error('上传视频只支持mp4格式!');
        return false;
      }
    },
    // 文件删除回调
    /**
     *
     * @param {*} file 文件对象
     * @param {*} fileList  文件列表
     * @param {*} fileType  后台返回的文件id
     * @param {*} fileTypeList 自定义文件列表变量
     * @param {*} hideType 需要隐藏上传的变量
     */
    handleFileRemove(file, fileList, fileType, fileTypeList, hideType) {
      this.$emit(`update:${fileType}`, '');
      this.$emit(`update:${fileTypeList}`, []);
      this.formObj[fileType] = '';
      this.$emit('update:formObj', this.formObj);
      if (hideType) {
        this.$emit(`update:${hideType}`, false);
      }
    },
    // 文件上传成功回调
    /**
     *
     * @param {*} file 文件对象
     * @param {*} fileList  文件列表
     * @param {*} fileType  后台返回的文件id
     * @param {*} fileTypeList 自定义文件列表变量
     * @param {*} hideType 需要隐藏上传的变量 //视频没有
     */
    handleFileSuccess(res, file, fileList, fileType, fileTypeList, hideType) {
      if (res.code === '200') {
        this.$message.error('文件上传成功');
        this.formObj[fileType] = res.data.id;
        this.$emit(`update:${fileTypeList}`, [
          {
            url: this.$getFile + res.data.id
          }
        ]);
        this.$emit('update:formObj', this.formObj);
        if (hideType) {
          this.$emit(`update:${hideType}`, true);
        }
      } else {
        this.$message.error('文件上传失败，请重试');
        this.$emit(`update:${fileType}`, '');
        this.$emit(`update:${fileTypeList}`, []);
        this.formObj[fileType] = '';
        this.$emit('update:formObj', this.formObj);
        if (hideType) {
          this.$emit(`update:${hideType}`, false);
        }
      }
    },
    handleFileChange(file, fileList, fileType, fileTypeList, hideType) {
      this.$emit(`update:${fileTypeList}`, []);
      const fileTypeArr = ['image/jpg', 'image/jpeg', 'image/png'];
      if (!fileTypeArr.includes(file.raw.type)) {
        this.$message.error('上传图片只支持jpg、jpeg、png格式!');
        return false;
      } else {
        this.$nextTick(() => {
          this.$emit('changeUpload', file, fileList);
        });
      }
    }
  }
};
